package com.java123.t2;

public class Demo1 {

	/**
	 * 名词解释：
	 * 
	 * 1、类：对现实生活中一类具有共同特征的事物的抽象，实质是一种数据类型。
	 * 	    - 如何理解： 数据大多来源于生活，从实体中抽象来，
	 * 		- 例如：学生是一类人，每个学生都有自己的学号，姓名，性别，班级，他们都做一件事 上学。
	 * 		- 所以可以把学生抽象出来，叫做Student类，这样计算机中也可以拥有“学生”了。
	 * 2、对象：类的实例叫对象。即Student stu = new Student(); stu即为Student的一个实例对象。
	 * 3、属性：在类中声明的全局变量。
	 * 		- 在上述的Student中，可以拥有stuNo,name,sex,class，好比一个学生拥有学号一样等...
	 * 		- 那么这些申明的全局变量就称为Student的属性。
	 *      - public int stuNo = 123;
	 * 5、方法：
	 * 		类中方法的结构如下：
	 * 			访问修饰符  + 返回值  + 方法名 +(参数){
	 * 				【方法体】
	 * 			} 
	 * 
	 * 	    - 方法可以理解成一个指令，一个动作。如上例，学生都做一件事那就是上学，那么可以抽象出这么一个方法
	 * 		- public Integer goToSchool(double f,String a){
	 * 			return 123;
	 * 			System.out.println("我去上学了...");
	 * 			}     
	 * 
	 * 7、关键词：有若干个，与访问修饰符一样，也是修饰资源的，目前只需要掌握：static(静态的)。作用：表示当前的资源为静态的（可以修饰变量和方法）。
	 * 一般非静态的方法和属性需要对象才能访问，static修饰后，可以直接用类.调用，如：System.out。如果修饰的是属性，那么属性会保留最后一次赋值。
	 * （如果难理解可以先放一放）
	 * 8、构造函数：类中特殊的方法。结构：访问修饰符 + 方法名（与类名一致） (){【方法体】}。
	 * 	一个类如果没特别申明构造函数，系统会默认给一个无参构造函数，以Student为例：
	 * 	public Student(){
	 *  
	 *  }。
	 *  在初始化对象的时候默认调用无参构造函数，也可以自己申明有参的构造函数，这个叫做重载（构造函数的重载）。
	 * 9、重载：一个类内，构造函数的参数不同，叫做构造函数的重载。
	 *    
	 *      
	 *      
	 *      
	 *      
	 * 6、访问修饰符：分为四类：public、private、protected、默认。目前只需要使用public，即共有的。作用：指明资源的访问权限。（以后拓展）
	 * 
	 * 10、代码块。结构：{ }。可以直接写代码，在类或对象被初始化的时候会被执行。
	 * 汇总：
	 * 	类中的结构：
	 * 	变量，方法，构造函数，代码块
	 *  其中 变量、方法、代码块可以被static修饰
	 *  **************
	 *  **	 重    点       ***
	 *  **************
	 *  它们加载的顺序：
	 *  |类被虚拟机初始化时就已经加载        | 对象初始化的时候调用，一般就是new的时候
	 *  静态变量 > 静态代码块 > 静态方法 > 构造函数 >（一般）变量  >（一般）代码块  >（一般）方法
	 *  
	 *extra:
	 *常用命名规则：
	 *定义：驼峰命名法，顾名思义，名字像驼峰一样。第一个单词首字母小写，此后每个单词的首字母大写，如：openUserId(开放的用户ID)
	 *	变量名、方法名采用驼峰命名法，类名第一个单词大写，后面采用驼峰命名
	 *  
	 * 案例：
	 * 
	 */
	
	public static void main(String[] args) {
		Student stu = new Student();
		System.out.println("调用无参，对象初始化完成。" + "当前num为：" + Student.num);
		System.out.println("------------------------");
		/**
		 * 新建对象后
		 * 此时静态变量num的为4，不为0。
		 */
		Student stu1 = new Student("王二小");
		System.out.println("调用有参，对象初始化完成。" + stu1.name);
		//作业：完成购物车，示例见Test1
		
	}
}
